package com.blrs.domain;

import java.math.BigDecimal;
import java.util.Date;
import com.blrs.common.annotation.Excel;
import com.blrs.common.core.domain.BaseEntity;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

/**
 * 项目实施工艺对象 project_process
 * 
 * @author ruoyi
 * @date 2024-05-15
 */
public class ProjectProcess extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /** 工艺ID，使用UUID作为主键，确保唯一性，用于唯一标识每个工艺记录 */
    private String processId;

    /** 关联的策划ID，外键关联project_planning表，建立工艺记录与策划记录的关联关系 */
    @Excel(name = "策划ID")
    private String planningId;

    /** 工艺模板ID，记录工艺所使用的模板ID */
    private String processTemplateId;

    /** 工艺模板名称，记录工艺所使用的模板名称 */
    @Excel(name = "工艺模板名称")
    private String processTemplateName;

    /** 阶段ID，记录工艺所处的阶段ID */
    private String processStageId;

    /** 阶段名称，记录工艺所处的阶段名称 */
    @Excel(name = "阶段名称")
    private String processStageName;

    /** 阶段顺序，记录工艺所处的阶段顺序 */
    @Excel(name = "阶段顺序")
    private Integer processStageOrder;  

    /** 计划开始时间，记录工艺计划开始的时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "计划开始时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date plannedStartTime;

    /** 计划结束时间，记录工艺计划结束的时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "计划结束时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date plannedEndTime;

    /** 实际开始时间，记录工艺实际开始的时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "实际开始时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date actualStartTime;

    /** 实际结束时间，记录工艺实际结束的时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "实际结束时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date actualEndTime;

    /** 执行人ID，外键关联user表，记录工艺的执行人ID */
    private Long executorPerson;

    /** 应收款项，记录工艺相关的应收款项金额 */
    @Excel(name = "应收款项")
    private BigDecimal receivableAmount;

    /** 用途，1策划，2模版，3实施 */
    @Excel(name = "用途", readConverterExp = "1=策划,2=模版,3=实施")
    private Integer useType;

    /** 状态，0未开始，1已开始，2已完成，3已超时 */
    @Excel(name = "状态", readConverterExp = "0=未开始,1=已开始,2=已完成,3=已超时")
    private Integer status;

    public String getProcessId() {
        return processId;
    }

    public void setProcessId(String processId) {
        this.processId = processId;
    }

    public String getPlanningId() {
        return planningId;
    }

    public void setPlanningId(String planningId) {
        this.planningId = planningId;
    }

    public String getProcessTemplateId() {
        return processTemplateId;
    }

    public void setProcessTemplateId(String processTemplateId) {
        this.processTemplateId = processTemplateId;
    }

    public String getProcessTemplateName() {
        return processTemplateName;
    }

    public void setProcessTemplateName(String processTemplateName) {
        this.processTemplateName = processTemplateName;
    }

    public String getProcessStageId() {
        return processStageId;
    }

    public void setProcessStageId(String processStageId) {
        this.processStageId = processStageId;
    }

    public String getProcessStageName() {
        return processStageName;
    }

    public void setProcessStageName(String processStageName) {
        this.processStageName = processStageName;
    }

    public Integer getProcessStageOrder() {
        return processStageOrder;
    }

    public void setProcessStageOrder(Integer processStageOrder) {
        this.processStageOrder = processStageOrder;
    }

    public Date getPlannedStartTime() {
        return plannedStartTime;
    }

    public void setPlannedStartTime(Date plannedStartTime) {
        this.plannedStartTime = plannedStartTime;
    }

    public Date getPlannedEndTime() {
        return plannedEndTime;
    }

    public void setPlannedEndTime(Date plannedEndTime) {
        this.plannedEndTime = plannedEndTime;
    }

    public Date getActualStartTime() {
        return actualStartTime;
    }

    public void setActualStartTime(Date actualStartTime) {
        this.actualStartTime = actualStartTime;
    }

    public Date getActualEndTime() {
        return actualEndTime;
    }

    public void setActualEndTime(Date actualEndTime) {
        this.actualEndTime = actualEndTime;
    }

    public Long getExecutorPerson() {
        return executorPerson;
    }

    public void setExecutorPerson(Long executorPerson) {
        this.executorPerson = executorPerson;
    }

    public BigDecimal getReceivableAmount() {
        return receivableAmount;
    }

    public void setReceivableAmount(BigDecimal receivableAmount) {
        this.receivableAmount = receivableAmount;
    }

    public Integer getUseType() {
        return useType;
    }

    public void setUseType(Integer useType) {
        this.useType = useType;
    }

    public Integer getStatus() {
        return status;
    }

    public void setStatus(Integer status) {
        this.status = status;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("processId", getProcessId())
            .append("planningId", getPlanningId())
            .append("processTemplateId", getProcessTemplateId())
            .append("processTemplateName", getProcessTemplateName())
            .append("processStageId", getProcessStageId())
            .append("processStageName", getProcessStageName())  
            .append("processStageOrder", getProcessStageOrder())
            .append("plannedStartTime", getPlannedStartTime())
            .append("plannedEndTime", getPlannedEndTime())
            .append("actualStartTime", getActualStartTime())
            .append("actualEndTime", getActualEndTime())
            .append("executorPerson", getExecutorPerson())
            .append("receivableAmount", getReceivableAmount())
            .append("useType", getUseType())
            .append("status", getStatus())
            .toString();
    }
} 